home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2000 June / Internet Magazine June 2000.iso / pc / software / windows / building / wirefusion / html / ex4 / bob51.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-01-07  |  2.4 KB  |  147 lines

  1. import java.awt.Event;
  2. import java.io.DataInputStream;
  3.  
  4. public class bob51 extends bob {
  5.    private int nrOfCurves;
  6.    private double totalLength;
  7.    private int[][] controlPointsX;
  8.    private int[][] controlPointsY;
  9.    private int lastX;
  10.    private int lastY;
  11.    private int newX;
  12.    private int newY;
  13.    private double resultX;
  14.    private double resultY;
  15.    private double[] pointsX;
  16.    private double[] pointsY;
  17.    private double[] lengths;
  18.    private int nrOfPoints;
  19.  
  20.    private void calcLocation(double var1) {
  21.       double var3 = var1 * this.totalLength;
  22.       double var5 = (double)0.0F;
  23.  
  24.       int var7;
  25.       for(var7 = 0; var5 + this.lengths[var7] < var3; ++var7) {
  26.          var5 += this.lengths[var7];
  27.       }
  28.  
  29.       double var8 = var3 - var5;
  30.       double var10 = var8 / this.lengths[var7];
  31.       double var12 = this.pointsX[var7];
  32.       double var14 = this.pointsY[var7];
  33.       double var16 = this.pointsX[var7 + 1];
  34.       double var18 = this.pointsY[var7 + 1];
  35.       this.lastX = this.newX;
  36.       this.lastY = this.newY;
  37.       this.newX = (int)(var12 + (var16 - var12) * var10);
  38.       this.newY = (int)(var14 + (var18 - var14) * var10);
  39.    }
  40.  
  41.    // $FF: renamed from: rd (java.io.DataInputStream) void
  42.    public void method_0(DataInputStream var1) {
  43.       try {
  44.          this.nrOfCurves = var1.readInt();
  45.          this.controlPointsX = new int[this.nrOfCurves][4];
  46.          this.controlPointsY = new int[this.nrOfCurves][4];
  47.  
  48.          for(int var2 = 0; var2 < this.nrOfCurves; ++var2) {
  49.             this.controlPointsX[var2][0] = var2 == 0 ? var1.readInt() : this.controlPointsX[var2 - 1][3];
  50.             this.controlPointsY[var2][0] = var2 == 0 ? var1.readInt() : this.controlPointsY[var2 - 1][3];
  51.             this.controlPointsX[var2][1] = var1.readInt();
  52.             this.controlPointsY[var2][1] = var1.readInt();
  53.             this.controlPointsX[var2][2] = var1.readInt();
  54.             this.controlPointsY[var2][2] = var1.readInt();
  55.             this.controlPointsX[var2][3] = var1.readInt();
  56.             this.controlPointsY[var2][3] = var1.readInt();
  57.          }
  58.  
  59.          this.newX = this.controlPointsX[0][1];
  60.          this.newY = this.controlPointsY[0][1];
  61.       } catch (Exception var3) {
  62.       }
  63.  
  64.    }
  65.  
  66.    private void expandArray(double[] var1) {
  67.       double[] var2 = new double[var1.length * 2];
  68.       System.arraycopy(var1, 0, var2, 0, var1.length);
  69.    }
  70.  
  71.    private void addPoint(double var1, double var3) {
  72.       if (this.pointsX.length < this.nrOfPoints) {
  73.          this.expandArray(this.pointsX);
  74.          this.expandArray(this.pointsY);
  75.          this.expandArray(this.lengths);
  76.       }
  77.  
  78.       this.pointsX[this.nrOfPoints] = var1;
  79.       this.pointsY[this.nrOfPoints] = var3;
  80.       if (this.nrOfPoints > 0) {
  81.          double var5 = var1 - this.pointsX[this.nrOfPoints - 1];
  82.          double var7 = var3 - this.pointsY[this.nrOfPoints - 1];
  83.          this.totalLength += this.lengths[this.nrOfPoints - 1] = Math.sqrt(var5 * var5 + var7 * var7);
  84.       }
  85.  
  86.       ++this.nrOfPoints;
  87.    }
  88.  
  89.    // $FF: renamed from: i () void
  90.    public void method_1() {
  91.       this.pointsX = new double[1000];
  92.       this.pointsY = new double[1000];
  93.       this.lengths = new double[1000];
  94.       this.nrOfPoints = 0;
  95.  
  96.       for(int var1 = 0; var1 < this.nrOfCurves; ++var1) {
  97.          double var2 = (double)0.0F;
  98.          this.calcPosition(var1, (double)0.0F);
  99.  
  100.          for(int var12 = 1; var12 < 5; ++var12) {
  101.             double var8 = this.resultX;
  102.             double var10 = this.resultY;
  103.             this.calcPosition(var1, (double)var12 / (double)4.0F);
  104.             double var4 = var8 - this.resultX;
  105.             double var6 = var10 - this.resultY;
  106.             var2 += Math.sqrt(var4 * var4 + var6 * var6);
  107.          }
  108.  
  109.          int var13 = (int)(var2 / (double)10) + 2;
  110.  
  111.          for(int var14 = 0; var14 < var13; ++var14) {
  112.             this.calcPosition(var1, (double)var14 / (double)var13);
  113.             this.addPoint(this.resultX, this.resultY);
  114.          }
  115.       }
  116.  
  117.       this.addPoint((double)this.controlPointsX[this.nrOfCurves - 1][3], (double)this.controlPointsY[this.nrOfCurves - 1][3]);
  118.    }
  119.  
  120.    private void calcPosition(int var1, double var2) {
  121.       double var4 = (double)this.controlPointsX[var1][0];
  122.       double var6 = (double)this.controlPointsX[var1][1];
  123.       double var8 = (double)this.controlPointsX[var1][2];
  124.       double var10 = (double)this.controlPointsX[var1][3];
  125.       double var12 = (double)this.controlPointsY[var1][0];
  126.       double var14 = (double)this.controlPointsY[var1][1];
  127.       double var16 = (double)this.controlPointsY[var1][2];
  128.       double var18 = (double)this.controlPointsY[var1][3];
  129.       double var20 = (double)1 - var2;
  130.       this.resultX = var4 * var20 * var20 * var20 + var6 * (double)3 * var2 * var20 * var20 + var8 * (double)3 * var2 * var2 * var20 + var10 * var2 * var2 * var2;
  131.       this.resultY = var12 * var20 * var20 * var20 + var14 * (double)3 * var2 * var20 * var20 + var16 * (double)3 * var2 * var2 * var20 + var18 * var2 * var2 * var2;
  132.    }
  133.  
  134.    // $FF: renamed from: he (java.awt.Event) void
  135.    public void method_2(Event var1) {
  136.       if (var1.id == 1) {
  137.          if (this.nrOfCurves > 0) {
  138.             this.calcLocation(((bob10)var1.arg).value / (double)100.0F);
  139.          }
  140.  
  141.          ((bob)this).ce(new bob13((double)this.newX, (double)this.newY), 1);
  142.          ((bob)this).ce(new bob13((double)(this.newX - this.lastX), (double)(this.newY - this.lastY)), 2);
  143.       }
  144.  
  145.    }
  146. }
  147.